const http = require('http'); // http
const fs = require('fs'); //文件操作
const url = require('url'); // 解析url地址
const path = require('path');//解析路径


// 创建服务器
const server = http.createServer((req, res) => {
    // req 请求头 获取你请求的相关信息 
    // res 响应头  本次响应的相关信息
    // 每当有客人进店 没当有人请求的时候 就会执行这个回调函数

    // req.url 请求的路径  客人点的菜  
    // req.method 请求的方法  客人是个什么样的人  get post 
    // console.log(req.url, req.method);
    const {pathname,query} = url.parse(req.url, true);
    // console.log(pathname,query);
    // console.log(url.parse(req.url, true));
    const {method} = req;
    // html css  js video img 统统属于 静态资源
    // /static/
    // /static/index.html 
    //  到client 文件夹 下面的views 文件夹下面的index.html
    // /static/index.css
    //  到client 文件夹 下面的css 文件夹下面的index.css
    // /static/index.js
    //  到client 文件夹 下面的js 文件夹下面的index.js

    if(/^\/static/.test(pathname)){
        // pathname = /static/index
        // 解析路径   path.parse() 
        // console.log(path.parse(pathname));
        /* 
        {
            root: '/',
            dir: '/static',
            base: 'home.html',
            ext: '.html',
            name: 'home'
        }
        */
        // 获取文件的后缀名
        const {base,ext} = path.parse(pathname);
        let pathinfo = './client';
        switch(ext){
            case '.html':
                // 读取文件
                // 拼接路径
                pathinfo += '/views/';
                break;
            case '.css':
                // 读取文件
                pathinfo += '/css/';
                break;
            case '.js':
                // 读取文件
                pathinfo += '/js/';
                break;
        }
        pathinfo += base;

        // fs.readFile('./client/views/home.html','utf-8',(err,data)=>{
        //     // console.log(err);
        //     console.log(data);
        // })
        // console.log(pathinfo);
        // 读取文件
        console.log(pathinfo);
        fs.readFile(pathinfo,'utf-8',(err,data)=>{
            if(err){
                if(ext === '.html'){
                    fs.readFile('./404.html','utf-8',(err,data)=>{
                        res.end(data);
                    })
                }else{
                    res.end('404');
                }
                return 
            }
            res.end(data);
            // console.log(data);
        });


    }


    if(/^\/api/.test(pathname)){
        if(pathname === '/api/cart/add' && method=== 'POST'){
            // POST数据放在请求体中  
            // get 拼接在url后面
            let str = '';
            req.on('data', (chunk) => {
                // chunk 就是 你传递的数据 请求体中的数据 
                // chunk 是一个buffer类型的数据
                // buffer 二进制字符串  
                str += chunk; 
                // 让字符串跟buffer类型的数据拼接起来
                // 就变成了普通字符串  
            })
            req.on('end', () => {
                let params = {};
                if(req.headers['content-type'] === 'application/json'){
                    params = JSON.parse(str);
                }else if(req.headers['content-type'] === 'application/x-www-form-urlencoded'){
                    // http://www.baidu.com?name=zs&age=18
                    //加上问号 精确的拿到查询字符串 
                    // 为了使用url.parse() 方法  必须要加上问号
                    params = url.parse('?'+str,true).query
                }

                console.log(params);

                const info = {
                    code:1,
                    message:'添加成功',
                    data:[{},{}]
                }

                if(!params.id){
                    info.code = 0;
                    info.message = '没有添加用户id';
                    res.end(JSON.stringify(info));
                }else if(!params.goodsId){
                    info.code = 0;
                    info.message = '没有添加商品id';
                    res.end(JSON.stringify(info));
                }else{
                    res.end(JSON.stringify(info));
                }

                

            })

        }
    }
})


// 启动服务 
// 相当于 把 饭馆的地址暴露出去  
server.listen(3000, () => {
    console.log('server is running at http://')
})